package com.kvn.instrument.agentmain.adaptor;

import java.util.List;

import com.sun.tools.attach.VirtualMachine;
import com.sun.tools.attach.VirtualMachineDescriptor;

/**
 * 编程式的方式加载 agent
 * 
 * @author wzy
 * @date 2017年9月21日 下午4:21:45
 */
public class ProgrammaticLoadAgent {

	public static void main(String[] args) throws Exception {
		List<VirtualMachineDescriptor> vms = VirtualMachine.list();
		String targetVM = "com.kvn.btrace._01demo.MainTest"; // 目标 JVM 的 name
		String agent = "C:\\Users\\w\\Desktop\\btracedemo.jar"; // 需要加载的 agent jar（注意：MANIFEST.MF中要注明  Agent-Class: com.kvn.instrument.agentmain.Agentmain）
		for (VirtualMachineDescriptor vmd: vms) {
		    if (vmd.displayName().equals(targetVM)) {
		        VirtualMachine vm = VirtualMachine.attach(vmd.id());
		        vm.loadAgent(agent);
//		        vm.loadAgent(agent, arg1); 给agent传递参数
		        vm.detach();
		    }
		}
	}

}
